<?php
namespace Common\Org\Sms\ThirdGimes;
/**
 * -------------
 * User: 董仲龙
 * -------------
 * Date: 13-11-27
 * -------------
 * Time: 下午3:56
 * -------------
 * Description:三基时代
 * -------------
 */

class Sms{

	public function __construct()
	{
        $ret = D('Admin/SmsSet')->getSmsConfig('thirdG');
		//var_dump($ret);exit;
        $this->url=$ret['url'];           //接口地址
		$this->ac=$ret['account'];		                          //用户账号
		$this->authkey=$ret['password'];		         //认证密钥
		$this->cgid=$ret['line'];
		$this->csid = '';
	}

	/**
	 * 发送短信
	 * @param $mobile
	 * @param $content
	 * @return bool
	 */
	public function sendSMS($mobile,$content){
		if(!is_array($mobile) || !$content){
			return false;
		}
		$mobile = implode(',',$mobile);

		//要post的数据
		$argv = array(
			'sn'=>$this->ac, ////替换成您自己的序列号
			'pwd'=>strtoupper(md5($this->ac.$this->authkey)), //此处密码需要加密 加密方式为 md5(sn+password) 32位大写
			'mobile'=>$mobile,//手机号 多个用英文的逗号隔开 post理论没有长度限制.推荐群发一次小于等于10000个手机号
			'content'=>$content.'【美丽云】',//iconv( "GB2312", "gb2312//IGNORE" ,'您好测试短信[XXX公司]'),//'您好测试,短信测试[签名]',//短信内容
			'ext'=>'',
			'stime'=>'',//定时时间 格式为2011-6-29 11:09:21
			'msgfmt'=>'',
			'rrid'=>''
		);

		$res = $this->post('mdsmssend',$argv);


		if($res['status']==0) {
			//echo '发送失败返回值为:'.$res['code'].'。请查看webservice返回值对照表';
			return false;
		} else {
			return $res['code'];
		}
	}

	/**
	 * 注册接口
	 */
	public function register(){
		//http://sdk.entinfo.cn:8060/webservice.asmx?op=Register
		//要post的数据
		$argv = array(
			'sn'=>$this->ac, ////序列号
			'pwd'=>$this->authkey, //此处密码需要加密 加密方式为 md5(sn+password) 32位大写
			'province'=>'广东省',//省，必填
			'city'=>'深圳市',//市，必填
			'trade'=>'移动互联网',//行业，必填
			'entname'=>'深圳市美丽网科技有限公司',//公司名称，必填
			'linkman'=>'刘维赶',//联系人，必填
			'phone'=>'0755-22936780',//电话，必填
			'mobile'=>'13798540727',//移动电话，必填
			'email'=>'dev@meiliwang.cc',//邮箱，必填
			'fax'=>'0755-8205 7087',//传真，必填
			'address'=>'深圳市福田区八卦二路东座203',//地址，必填
			'postcode'=>'518000',//邮政编码，必填
			'sign'=>'美丽云',//签名，可为空
		);
		var_dump($argv);exit;

		$res = $this->post('Register',$argv);

		if($res['status']==0){
			echo '注册失败返回值为:'.$res['code'].'。请查看webservice返回值对照表';
		} else {
			echo '注册成功 返回值为:'.$res['code'];
		}
	}

	public function balance(){
		$argv = array(
			'sn'=>$this->ac, ////序列号
			'pwd'=>strtoupper(md5($this->ac.$this->authkey)), //此处密码需要加密 加密方式为 md5(sn+password) 32位大写
		);

		$res = $this->post('balance',$argv);

		var_dump($res);
	}

	private function post($action,$argv=''){
		$params='';
		$flag = 0;
		foreach ($argv as $key=>$value) {
			if ($flag!=0) {
				$params .= "&";
				$flag = 1;
			}
			$params.= $key."="; $params.= urlencode($value);// urlencode($value);
			$flag = 1;
		}
		$length = strlen($params);
		//创建socket连接
		$fp = fsockopen("sdk.entinfo.cn",8061,$errno,$errstr,10) or exit($errstr."--->".$errno);
		//构造post请求的头
		//$header = "POST /webservice.asmx/Register HTTP/1.1\r\n";
		$header = "POST /webservice.asmx/{$action} HTTP/1.1\r\n";
		$header .= "Host:sdk.entinfo.cn\r\n";
		$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
		$header .= "Content-Length: ".$length."\r\n";
		$header .= "Connection: Close\r\n\r\n";
		//添加post的字符串
		$header .= $params."\r\n";
		//发送post的数据
		//echo $header;
		//exit;
		fputs($fp,$header);
		$inheader = 1;
		while (!feof($fp)) {
			$line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据
			if ($inheader && ($line == "\n" || $line == "\r\n")) {
				$inheader = 0;
			}
			if ($inheader == 0) {
				// echo $line;
			}
		}
		//<string xmlns="http://tempuri.org/">-5</string>
		$line=str_replace("<string xmlns=\"http://tempuri.org/\">","",$line);
		$line=str_replace("</string>","",$line);
		$result=explode("-",$line);
		//var_dump($result);exit;
		// echo $line."-------------";
		if(count($result)>1){
			return array('status'=>0,'code'=>$line);
		} else {
			return array('status'=>1,'code'=>$line);
		}

	}
}